home *** CD-ROM | disk | FTP | other *** search
/ Gigantic Games 2 / Gigantic Games 2.iso / pc / new / new_1 / arachnid / rowreq.c < prev    next >
C/C++ Source or Header  |  1994-12-23  |  3KB  |  99 lines

  1. #include <functions.h>
  2.  
  3. extern APTR VisualInfo;
  4. extern struct Screen  *Scr;
  5. extern struct TextAttr topaz8;
  6.  
  7. struct Window *RowReqWnd = NULL;
  8. struct Gadget *RowReqGList = NULL;
  9. struct NewGadget RowReqGadget =
  10.         { 0, 30, 35, 20, NULL, &topaz8, 0, PLACETEXT_IN, NULL, NULL};
  11.  
  12. struct IntuiText RowReqIText[] = {
  13.         1, 0, JAM1,15, 8, &topaz8, (UBYTE *)"Bitte die Reihe wählen:", NULL };
  14.  
  15. UBYTE *GadText[] = {(UBYTE *)"_1",(UBYTE *)"_2",(UBYTE *)"_3",
  16.                     (UBYTE *)"_4",(UBYTE *)"_5",(UBYTE *)"_6",
  17.                     (UBYTE *)"_7",(UBYTE *)"_8",(UBYTE *)"_9",(UBYTE *)"1_0"};
  18.  
  19. void FehlerAus(long nr);
  20.  
  21. long RowReq()
  22. {
  23.   long i,code,class,Karte;
  24.   BOOL ende = FALSE;
  25.   struct IntuiMessage *message;
  26.   struct MsgPort      *UserPort;
  27.   struct Gadget       *gad;
  28.  
  29.   gad = CreateContext(&RowReqGList);
  30.   RowReqGadget.ng_VisualInfo = VisualInfo;
  31.  
  32.   for(i=0;i<10;i++)
  33.   {
  34.     RowReqGadget.ng_LeftEdge = i*35+25;
  35.     RowReqGadget.ng_GadgetText = GadText[i];
  36.     RowReqGadget.ng_GadgetID = i;
  37.     gad = CreateGadget(BUTTON_KIND, gad, &RowReqGadget, GT_Underscore, '_', TAG_DONE);
  38.   }
  39.  
  40.   if(!gad)
  41.   {
  42.     FehlerAus(9);
  43.     return(-1);
  44.   }
  45.  
  46.   if(!(RowReqWnd = OpenWindowTags(NULL,
  47.                  WA_Left,      179,
  48.                  WA_Top,       0,
  49.                  WA_Width,     400,
  50.                  WA_Height,    70,
  51.                  WA_IDCMP,     BUTTONIDCMP|IDCMP_INACTIVEWINDOW|IDCMP_VANILLAKEY,
  52.                  WA_Flags,     WFLG_SMART_REFRESH|WFLG_ACTIVATE,
  53.                  WA_Gadgets,   RowReqGList,
  54.                  WA_Title,     NULL,
  55.                  WA_PubScreen, Scr,
  56.                  TAG_DONE )))
  57.   {
  58.     FreeGadgets(RowReqGList);
  59.     FehlerAus(7);
  60.     return(-1);
  61.   }
  62.  
  63.   GT_RefreshWindow(RowReqWnd, NULL);
  64.  
  65.   DrawBevelBox(RowReqWnd->RPort, 15, 20, 370, 40, GT_VisualInfo, VisualInfo, GTBB_Recessed, TRUE, TAG_DONE);
  66.   PrintIText(RowReqWnd->RPort, RowReqIText, 0, 0);
  67.  
  68.   UserPort = RowReqWnd->UserPort;
  69.   while(!ende)
  70.   {
  71.     Wait(1L << UserPort->mp_SigBit);
  72.     while(message = (struct IntuiMessage *) GT_GetIMsg(UserPort))
  73.     {
  74.       gad = (struct Gadget*)message->IAddress;
  75.       class = message->Class;
  76.       code  = message->Code;
  77.       GT_ReplyIMsg(message);
  78.       switch(class)
  79.       {
  80.         case IDCMP_INACTIVEWINDOW: ActivateWindow(RowReqWnd);
  81.                                    break;
  82.         case IDCMP_GADGETUP:       Karte = gad->GadgetID;
  83.                                    ende = TRUE;
  84.                                    break;
  85.         case IDCMP_VANILLAKEY:     if((code < '0')||(code > '9')) break;
  86.                                    Karte = code - '0';
  87.                                    Karte = Karte ? Karte-1 : 9;
  88.                                    ende = TRUE;
  89.       }
  90.     }
  91.   }
  92.  
  93.  
  94.   CloseWindow(RowReqWnd);
  95.   FreeGadgets(RowReqGList);
  96.  
  97.   return(Karte);
  98. }
  99.